package com.ewanghuiju.app.component;

import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.ewanghuiju.app.R;

import androidx.annotation.DrawableRes;

/**
 * @author sj  qq:751943509
 * @class describe
 * @time 2020/2/11
 */
public class ImageLoader {

    public static void load(Context context, String url, ImageView iv) {    //使用Glide加载圆形ImageView(如头像)时，不要使用占位图
        if (context instanceof Activity) {
            if (!isDestroy((Activity) context)) {
                Glide.with(context).load(url).into(iv);
            }
        } else {
            Glide.with(context).load(url).into(iv);
        }
//        Glide.with(context).load(url).dontAnimate()
//                .placeholder(R.mipmap.icon_error_picture)//图片加载出来前，显示的图片
//                .error(R.mipmap.icon_error_picture)//图片加载失败后，显示的图片
//                .into(iv);
//        }
    }

//    public static void loadImage(Context context, String url, ImageView iv) {    //使用Glide加载圆形ImageView(如头像)时，不要使用占位图
//        EasyGlide.loadImage(context, url, iv);
//    }

//    public static void loadImage(Context context, int url, ImageView iv) {    //使用Glide加载圆形ImageView(如头像)时，不要使用占位图
//        EasyGlide.loadImage(context, url, iv);
//    }

    public static void load(Activity activity, String url, ImageView iv) {    //使用Glide加载圆形ImageView(如头像)时，不要使用占位图
        if (!activity.isDestroyed()) {
            Glide.with(activity).load(url).dontAnimate()
//                    .placeholder(R.mipmap.icon_error_picture)//图片加载出来前，显示的图片
//                    .error(R.mipmap.icon_error_picture)//图片加载失败后，显示的图片
                    .into(iv);
        }
    }

    public static void loadAll(Context context, String url, ImageView iv) {    //不缓存，全部从网络加载
        Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.NONE).into(iv);
    }

    public static void loadAll(Activity activity, String url, ImageView iv) {    //不缓存，全部从网络加载
        if (!activity.isDestroyed()) {
            Glide.with(activity).load(url).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(iv);
        }
    }

    public static void load(Context context, Object object, ImageView imageView) {
        if (imageView == null) {
            return;
        }
        load(context, object, imageView, R.mipmap.icon_common_error_pic);
    }

    public static void load(Context context, Object object, ImageView imageView, @DrawableRes int placeholder) {
        if (imageView == null) {
            return;
        }

//        skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE)
//        if (!SystemUtil.isNetworkConnected()&&) {
//            object = ContextCompat.getDrawable(context, placeholder);
//        }
        if (context instanceof Activity) {
            if (!isDestroy((Activity) context)) {
                Glide.with(context).load(object).placeholder(R.mipmap.icon_common_error_pic).into(imageView);
            }
        } else {
            Glide.with(context).load(object).placeholder(R.mipmap.icon_common_error_pic).into(imageView);
        }
    }


    /**
     * 判断Activity是否Destroy
     *
     * @param mActivity
     * @return
     */
    public static boolean isDestroy(Activity mActivity) {
        if (mActivity == null || mActivity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed())) {
            return true;
        } else {
            return false;
        }
    }

//    public static void loadBlurry(ImageView imageView, Object o) {
//        if (imageView == null) {
//            return;
//        }
//        Drawable drawable = imageView.getDrawable();
//        if (drawable == null) {
//            drawable = ContextCompat.getDrawable(imageView.getContext(), R.mipmap.test);
//        }
//        if (!Utils.isNetworkConnected(imageView.getContext())) {
//            o = ContextCompat.getDrawable(imageView.getContext(), R.mipmap.test);
//        }
//        Glide.with(imageView.getContext())
//                .load(o)
//                .apply(new RequestOptions().placeholder(drawable).error(drawable).centerCrop())
//                .transition(new DrawableTransitionOptions().crossFade())
//                .into(new DrawableImageViewTarget(imageView) {
//                    @Override
//                    public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
//                        Bitmap bitmap = ((BitmapDrawable) resource).getBitmap();
//                        Blurry.with(imageView.getContext()).from(bitmap).into(imageView);
//                    }
//                });
//    }
}
